/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package com.flowumi.controladores.admin;

import com.flowumi.controladores.SessionFlowumiUtilBean;
import com.flowumi.entity.Cursos;
import com.flowumi.entity.Usuarios;
import com.flowumi.facade.AdminFacade;
import java.io.IOException;
import java.io.Serializable;
import java.util.Calendar;
import java.util.Date;
import java.util.List;
import javax.annotation.PostConstruct;
import javax.ejb.EJB;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ManagedProperty;
import javax.faces.bean.RequestScoped;
import javax.faces.context.FacesContext;
import org.apache.log4j.Logger;

/**
 *
 * @author ideacentre
 */
@ManagedBean
@RequestScoped
public class AdminAgregarCursoBean implements Serializable{

    private static final Logger LOGGER =
            Logger.getLogger(AdminAgregarCursoBean.class);
    
    
    
    @EJB
    AdminFacade adminFacade;
    private Cursos curso;
    private List<Usuarios> profesores;
    
    @ManagedProperty("#{sessionFlowumiUtil}")
    private SessionFlowumiUtilBean sessionBean;

    public void setSessionBean(SessionFlowumiUtilBean sessionBean) {
        this.sessionBean = sessionBean;
    }
    
    

    /**
     * Creates a new instance of AdminAgregarCursoBean
     */
    public AdminAgregarCursoBean() {
    }

    @PostConstruct
    public void init() {
        if(sessionBean.getUsuario().getIdRol()==null||sessionBean.getUsuario().getIdRol().getIdRol()!=1){
            try {
                sessionBean.Desconectar();
                FacesContext.getCurrentInstance().getExternalContext().redirect("InicioSession.xhtml");
            } catch (IOException ex) {
                LOGGER.error(ex);
            }
        }
        curso = new Cursos();
        curso.setFechaInicio(new Date());
        Calendar c = Calendar.getInstance();
        c.setTimeInMillis(curso.getFechaInicio().getTime());
        c.add(Calendar.MONTH, 1);
        curso.setFechaFinalizacion(c.getTime());
        curso.setProfesor(new Usuarios());
        profesores = adminFacade.getListaProfesores();
    }


    public String AgregarCurso() {
        adminFacade.AgregarCurso(curso);
        return "/faces/pages/AdminListaCursos.xhtml";
    }
    
    public Date getFechaMesDespuesFechaInicial() {
        Calendar c = Calendar.getInstance();
        c.setTimeInMillis(curso.getFechaInicio().getTime());
        c.add(Calendar.MONTH, 1);
        return c.getTime();
    }

    public void handleDateSelect() {
        Calendar c = Calendar.getInstance();
        c.setTimeInMillis(curso.getFechaInicio().getTime());
        c.add(Calendar.MONTH, 1);
        if (curso.getFechaFinalizacion().before(c.getTime())) {
            curso.setFechaFinalizacion(c.getTime());
        }
    }
    
    public Date getFechaActual() {
        return new Date();
    }

    public Cursos getCurso() {
        return curso;
    }

    public void setCurso(Cursos curso) {
        this.curso = curso;
    }

    public List<Usuarios> getProfesores() {
        return profesores;
    }

    public void setProfesores(List<Usuarios> profesores) {
        this.profesores = profesores;
    }
}
